This dataset includes keystrokes and other data from a CS1 (CS 1400) course at
Utah State University taught in Fall 2021. Files include:

* keystrokes.csv - Keystrokes in mostly compliant ProgSnap2 format. See
  https://cssplice.github.io/progsnap2/ProgSnap2-v8-18Dec2020.pdf.
  Differences in columns from ProgSnap2 are:
  ** SourceLocation - One-dimensional index of the linearized program. The
     standard requires a line and column. We use a single index for efficiency
     purposes. For space purposes it is not prefixed by "text:" as given in the
     standard.
  ** Code state is not maintained, so CodeStateID is always nan.
  ** ClientTimestamp - see note on timestamps at the end of this file.
  ** X-Compilable - 1 if the current state has no syntax errors, 0 otherwise.

* runs.csv - Record of execution runs. This file is very big because it
  includes all output from every run, so if a student had an infinite loop
  there are many lines in the CSV. To filter these out, filter out rows with
  'o' in the Action column.

* students.csv - Grades, ACT score, GPA, and major for each student.

* due.csv - Due dates for the assignments. "Timestamp UTC" is given as a
  convenience: it corresponds with the timestamps in keystrokes.csv for ease
  of calculation of remaining time before the due date. "Timestamp UTC" is
  Unix Epoch time in UTC. See below for the course late policy.

* Assignment Descriptions - Descriptions for each of the assignments.

All timestamps in keystrokes.csv and runs.csv are from Java's
System.CurrentTimeMillis(), which gives Unix Epoch time in UTC. due.csv has
MDT/MST, UTC, and ms since the Unix epoch versions of the due dates.

Course late policy is as follows from the course syllabus: "Assignments are
due at 11:59PM of the due date. The official clock is the Canvas system.
Thus, if Canvas says it is late, then it is late. Assignments may not be
turned in late, as an extra day is already built in to the due date. You
will receive 100 grace points for your assignments. This means that you can
lose up to 100 points on assignments throughout the semester and still get
full credit for your final grade."